package com.yuhuihui.common.utils;

import java.util.Map;
import java.util.Optional;
import java.util.function.Supplier;

/**
 * Optional工具类
 *
 * @author yuhh
 * @date 2022-09-23 11:55:57
 */
public final class OptionalUtil {

    /**
     * 获取不为null的值
     *
     * @param map          map
     * @param key          需要从map里取值的key
     * @param defaultValue 默认值
     * @return {@link E }
     * @author yuhh
     * @date 2022-09-23 14:03:35
     */
    public static <K, E> E getNotNull(Map<K, E> map, K key, Supplier<? extends E> defaultValue){
        return Optional.ofNullable(map.get(key)).orElseGet(defaultValue);
    }

    /**
     * 获取不为null的值
     *
     * @param value        需要获取的值
     * @param defaultValue 默认值
     * @return {@link E }
     * @author yuhh
     * @date 2022-09-23 14:10:03
     */
    public static <E> E getNotNull(E value, Supplier<? extends E> defaultValue){
        return Optional.ofNullable(value).orElseGet(defaultValue);
    }

    private OptionalUtil() {}
}
